package com.parking.platform.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.parking.common.core.model.PageInfo;
import com.parking.platform.dto.PlatformDto;
import com.parking.platform.entity.PlatformAccount;
import com.parking.platform.form.AddPlatformDataForm;
import com.parking.platform.form.PlatLoginForm;
import com.parking.platform.form.SelPlatformForm;
import com.parking.platform.form.UpPlatformPassForm;


/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 香菜狗带
 * @since 2023年11月28日
 */
public interface PlatformAccountService extends IService<PlatformAccount> {
    /***
     * 登录方法
     * 参数：
     ("用户账号")：platformAccount;
     ("用户密码")：platformPass;
     ("请求头"):response
     */
    PlatformDto platLogin(PlatLoginForm form,String IpPath);
    /***
     * 根据Id查询平台账号
     * 参数：
     * 令牌:authorization
     */
    PlatformDto findPlatformById(Integer platformId);
    /**
     * 最高管理员
     * 启用平台账号状态
     * 参数
     * 令牌：authorization=>adminId
     *
     * 账号Id：platformId
     * */
    void enablePlatStateById( Integer platformId, Integer adminId);
    /**
     * 禁用平台账号状态
     * 参数
     * 令牌：authorization=>adminId
     *
     * 账号Id：platformId
     * */
    void downPlatStateById(Integer platformId, Integer adminId);
    /**
     * 删除平台账号
     * 参数
     * 令牌：authorization=>adminId
     * 账号状态：state
     * 账号Id：platformId
     * */
    void deletePlatStateById( Integer platformId, Integer adminId);
    /***
     * 最高管理员
     * 添加平台账号
     * 参数：
     * 令牌：authorization=>adminId
     * ("平台账号")：platformAccount;
     * ("平台密码")：platformPass;
     */
    void addPlatformData(AddPlatformDataForm form, Integer adminId);
    /***
     * 查询全部平台账号
     * 参数：
     * 账号：platformAccount
     * 角色：platformRoleName
     * 返回值：
     *  List<PlatformDto>
     *
     */
    PageInfo findPlatformAll(SelPlatformForm form);
    /***
     * 最高管理员
     * 修改平台账号
     * 参数：
     * 令牌：authorization=>adminId
     * 令牌：authorization
     */
    void upPlatformData(Integer platformId, String platformAccount, Integer adminId);
    /***
     * 退出登录方法
     * 参数：
     ("平台Id")：platformId;
     */
    void PlatformLogOff(Integer platformId);
    /**
     * 根据ID查询平台账号
     * 参数: 平台账号Id platformId
     * 返回: 平台账号Id platformId
     * 平台账号 platformAccount
     * 方法: 1.判断platformId是否存在对应的平台账号 若不存在则抛异常
     * 2.判断对应的平台账号的状态是否是启用的 若不是则抛异常
     * 3.将平台账号放入Dto返回
     */
    PlatformAccount getPlatformById(Integer platformId);
    /**
     * 平台修改密码
     * 参数：
     *  ("旧密码")：oldPass;
     * ("新密码")：newPass;
     *  ("平台Id")：platformId;
     * */
    void UpPlatformPass(UpPlatformPassForm form, Integer platformId);
}
